home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / c / c2man-2.0pl33.lha / c2man-2.0 / symbol.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-01-14  |  976 b   |  42 lines

  1. /* $Id: symbol.h,v 2.0.1.2 1993/08/31 05:04:35 greyham Exp $
  2.  *
  3.  * Definitions for a symbol table
  4.  */
  5. #include "config.h"
  6.  
  7. #ifndef _SYMBOL_H
  8. #define _SYMBOL_H
  9.  
  10. typedef struct _symbol {
  11.     struct _symbol *next;    /* next symbol in list */
  12.     char *name;            /* name of symbol */
  13.     unsigned short flags;    /* symbol attributes */
  14.  
  15.     enum { SYMVAL_NONE, SYMVAL_ENUM } valtype;
  16.     
  17.     union {
  18.         struct _enumerator_list *enum_list;
  19.     } value;
  20. } Symbol;
  21.  
  22. /* The hash table length should be a prime number. */
  23. #define SYM_MAX_HASH 251
  24.  
  25. typedef struct _symbol_table {
  26.     Symbol *bucket[SYM_MAX_HASH];    /* hash buckets */
  27. } SymbolTable;
  28.  
  29. /* Create symbol table */
  30. extern SymbolTable *create_symbol_table();
  31.  
  32. /* destroy symbol table */
  33. extern void destroy_symbol_table _((SymbolTable *symtab));
  34.  
  35. /* Lookup symbol name */
  36. extern Symbol *find_symbol _((SymbolTable *symtab, char *name));
  37.  
  38. /* Define new symbol */
  39. extern Symbol *new_symbol _((SymbolTable *symtab, char *name, int flags));
  40.  
  41. #endif
  42.